﻿////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, //
// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED 		        //
// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.		    //
// 																				                                                //
//							                        Copyright (c) UIROBOT. 								            //
// 							                            All rights reserved.								                //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////


#ifndef __UISIMCANFUNC_RT_H__
#define __UISIMCANFUNC_RT_H__
// 24系列
#define     UIDEV_RS232CAN          0x0001
#define     UIDEV_WIFI2RS232CAN	    0x0002
#define     UIDEV_USBCAN	        0x0004
#define     UIDEV_PCICAN	        0x0008
#define     UIDEV_ETHCAN	        0x0010
#define     UIDEV_UARTCAN	        0x0020
#define     THIRD_PARTY_DEV	        0x0040

#define     UIDEV_ALL               (UIDEV_RS232CAN|UIDEV_WIFI2RS232CAN|UIDEV_USBCAN|UIDEV_PCICAN|UIDEV_ETHCAN|UIDEV_UARTCAN)

#define ERR_SYNTEX				    50	    //syntext error
#define ERR_NUMERICAL		    	51	    //numerical error
#define ERR_MQEC			        53	    //current is QEC
#define ERR_MPOS		    		52	    //current is POS
#define ERR_NOMODSUP		    	54	    //no module support

//定义网关信息结构
typedef struct _GATEWAY_INFO_OBJ
{
    unsigned int    dwGWIndex;              //网关的索引号，中间包含网关的类型
    unsigned int    dwCanBtr;               //网关的can比特率
    unsigned int    dwBaudRate;             // 串口波特率
    char            gwID;                   //网关站点地址
    unsigned int    dwDrvNum;               //设备站点数量
    char            GWName[64];             //网关的相关信息
    int             uiDrvSN;                // 驱动器SN号
}GATEWAY_INFO_OBJ, *P_GATEWAY_INFO_OBJ;
//定义USB/PCI/RS232设备信息
typedef struct _DEV_INFO_OBJ
{
	unsigned int    dwDevType;		        //0x11代表RS232CAN 0x20代表PCICAN
	unsigned int	dwDevIndex;		        //软件启动时为设备分配的ID
	unsigned int    uiComIndex;             //系统分配的COM编号
	unsigned int    uiBaudRate;				//COM口对应的波特率
	char            pszDevName[64];         //CAN数据包原为8个字节，为了支持RS232，此数据的长度增加为128
	unsigned int    Protocol;               //是字符串传输还是数据传输
}DEV_INFO_OBJ, *P_DEV_INFO_OBJ;
typedef struct _GW_SEARCH_PARA
{
	unsigned int    dwComIndex;
	unsigned int    dwBtr;
}GW_SEARCH_PARA, *P_GW_SEARCH_PARA;

//驱动器通知类型定义
typedef enum emNoticeType
{
	S1NoticeDn = 0,
	S1NoticeUp,
	S2NoticeDn,
	S2NoticeUp,
	S3NoticeDn,
	S3NoticeUp,
	P4NoticeLow,
	P4NoticeHigh,
	StpNoticeOpn,
	StpNoticeCls,
	OrgNotice,
	StlNotice,	
	NoticeSum
}NoticeType;

//运动参数结构定义
typedef struct ST_CANIDNotice
{
	unsigned int    dwDevIndex;
	unsigned int    dwCanNodeId;
	 int            bDrvNotice[NoticeSum];
	 int            b828NoticeUp[8];
	 int            b828NoticeDn[8];
}CANIDNotice, *P_CANIDNotice;

//定义CAN信息帧的数据类型
typedef struct _CAN_MSG_OBJ
{
    unsigned int    ID;                 //报文 ID  = SID(11位) | EID (18位)
    unsigned int    Reserved0;          //保留, 赋值0
    char            Reserved1;          //保留, 赋值0
    char            SendType;		    //0：正常发送，1：自发自收
    char            IDE;	            //0：标准帧，  1：扩展帧 识别符扩展位
    char            RTR;	            //0：数据帧，  1：远程帧 远程发送请求位
    char            DataLen;		    //表明Data[8]数组内的的字节数，长度不能超过8；
    char            Data[8];            //CAN数据包原为8个字节，为了支持RS232，此数据的长度增加为128
    char            Reserved[3];		//系统保留
}CAN_MSG_OBJ, *P_CAN_MSG_OBJ;
//Basic Instruction Acknowledgment
typedef struct _BASIC_ACK_OBJ
{
	unsigned int    uiReserv;           //0
	unsigned int    bENA;               //电机使能状态
	unsigned int    bDIR;               //电机方向
	unsigned int    bACR;               //电流减半
	unsigned int    uiMCS;              //电机细分
	unsigned int    uiCUR;              //电流
	unsigned int    uiSPD;              //当前速度
	unsigned int    uiSTP;              //当前步长
}BASIC_ACK_OBJ, *P_BASIC_ACK_OBJ;
//Basic Instruction Feedback
typedef struct _BASIC_FBK_OBJ
{
	unsigned int    uiReserv;           //0
	 int            bENA;               //电机使能状态
	 int            bDIR;               //电机方向
	 int            bACR;               //电流减半
	unsigned int    uiMCS;              //电机细分
	unsigned int    uiCUR;              //电流
	int             iSPD;               //当前速度
	int             iSTP;               //当前步长
}BASIC_FBK_OBJ, *P_BASIC_FBK_OBJ;
//电机型号和固件号信息
typedef struct _MDL_INFO_OBJ
{
	unsigned int    uiCANNodeID;			  //驱动器标识码
	unsigned int    uiCANNodeType;			  //驱动器型号
	unsigned int    uiCurrent;				  //电流
	unsigned int    bIntegrationEncode;		  //内置编码器
	 int            bEnCode;				  //闭环控制
	 int            bMotion;				  //高级运动控制
	 int            b2Sensor;				  //"-SP"
	 int            b4Sensor;				  //"-S"
	 unsigned int   uiFirewareVersion;		  //驱动器固件版本
	char            szModelName[20];		  //驱动器型号
}MDL_INFO_OBJ, *P_MDL_INFO_OBJ;
//UIM设备的主配置寄存器结构
typedef union _UIM_MCFG_INFO_OBJ
{
	struct  
	{
		unsigned bS1IE      : 1;
		unsigned bS2IE      : 1;
		unsigned bS3IE      : 1;
		unsigned bP4IE      : 1;
		unsigned bSTPIE     : 1;
		unsigned bORGIE     : 1;
		unsigned bSTLIE     : 1;
		unsigned            : 1;
		unsigned bDM        : 1;
		unsigned bAM        : 1;
		unsigned bCM        : 1;
		unsigned bQEM       : 1;
		unsigned            : 1;
		unsigned bQEI       : 1;
		unsigned bCHS       : 1;
		unsigned bANE       : 1;
		unsigned            : 16;
	};
	unsigned int  uiMcfgVal;
}UIM_MCFG_INFO_OBJ, *P_UIM_MCFG_INFO_OBJ;

//UIM设备的上电状态控制寄存器结构
typedef union _UIM_ICFG_INFO_OBJ
{
	struct  
	{
		unsigned bENA        : 1;
		unsigned bCCW        : 1;
		unsigned bPROG       : 1;
		unsigned bELOCK      : 1;
		unsigned bS1C        : 1;
		unsigned bS2C        : 1;
		unsigned bS3C        : 1;
		unsigned bP4C        : 1;
		unsigned             : 1;
		unsigned             : 1;
		unsigned             : 1;
		unsigned             : 1;
		unsigned             : 1;
		unsigned             : 1;
		unsigned iEV         : 2;
		//unsigned bEV0        : 1;
		//unsigned bEV1        : 1;
		unsigned             : 16;
	};
	unsigned int  uiIcfgVal;
}UIM_ICFG_INFO_OBJ, *P_UIM_ICFG_INFO_OBJ;


//UID设备的主配置寄存器结构
typedef union _UID_MCFG_INFO_OBJ
{
	struct  
	{
		unsigned bP1IE		:1;
		unsigned bP2IE		:1;
		unsigned bP3IE		:1;
		unsigned bP4IE		:1;
		unsigned bP5IE		:1;
		unsigned bP6IE		:1;
		unsigned bP7IE		:1;
		unsigned bP8IE		:1;
		unsigned bInitP1DVA	:1;
		unsigned bInitP2DVA	:1;
		unsigned bInitP3DVA	:1;
		unsigned bInitP4DVA	:1;
		unsigned bInitP5DVA	:1;
		unsigned bInitP6DVA	:1;
		unsigned bInitP7DVA	:1;
		unsigned bInitP8DVA	:1;
	};
	unsigned int  uiMcfgVal;
}UID_MCFG_INFO_OBJ, *P_UID_MCFG_INFO_OBJ;

//UIM242XXX系列专用S34CON结构
typedef struct _S34CON
{
	unsigned int    bP4LVL;         //0:false 发生的事件符合P4EVENT 代码时，P4 出低电平（即0V）。
	                                //1:true 发生的事件符合P4EVENT 代码时，P4 出高电平（即5V）。
	unsigned int    uiP4EVENT;
	unsigned int    uiS3RACT;       //s3上升沿值
	unsigned int    uiS3FACT;       //s3下降沿值
	unsigned int    uiSTLValue;     //堵状绑定的动作
}S34CON, *P_S34CON;
//S12CON结构
typedef struct _S12CON
{
	unsigned int    uiS2RACT;       //s2上降沿值
	unsigned int    uiS2FACT;       //s2下降沿值
	unsigned int    uiS1RACT;       //s1上升沿值
	unsigned int    uiS1FACT;       //s1下降沿值
}S12CON, *P_S12CON;

//传感器返回信息结构
typedef struct _SCFG_INFO_OBJ
{
	S12CON s12CON;                  //S1,S2传感器动作代码存储到该结构
	S34CON s34CON;                  //S3,S4传感器动作代码存储到该结构，仅适用于UIM242
	unsigned int  uiATCONH;         //模拟量的最大值
	unsigned int  uiATCONL;         //模拟量的最小值
}SCFG_INFO_OBJ, *P_SCFG_INFO_OBJ;

//STG所有配置信息
typedef struct _STG_INFO_OBJ
{
	unsigned int    uiSenNum;       //需要设置的传感器
	unsigned int    uiS1TrigerTime;
	unsigned int    uiS2TrigerTime;
	unsigned int    uiS3TrigerTime;
}STG_INFO_OBJ, *P_STG_INFO_OBJ;
//传感器返回信息结构
typedef struct _SFBK_INFO_OBJ
{
	unsigned int    bSensor1;      //S1传感器的电平逻辑值
	unsigned int    bSensor2;      //S2传感器的电平逻辑值
	unsigned int    bSensor3;      //S3传感器的电平逻辑值
	float           fAnaInput;     //The converted value for analog input (12 bit)
}SFBK_INFO_OBJ, *P_SFBK_INFO_OBJ;

typedef struct _BASIC_MOVE_PARA_OBJ //基本运动参数结构
{
	int         iSpd;               //速度
	int         iPos;               //绝对位置
	int         iTimeOut;           //超时设置，单位毫秒
}BASIC_MOVE_PARA_OBJ, *P_BASIC_MOVE_PARA_OBJ;

typedef struct _ADV_MOVE_PARA_OBJ   //高级运动参数结构
{
	int         iMacc;              //加速度
	int         iMdec;              //减速度
	int         iMmss;              //最大启动速度
	int         iMmds;              //最大瞬停速度
}ADV_MOVE_PARA_OBJ, *P_ADV_MOVE_PARA_OBJ;

typedef struct _SENSOR_MOVE_PARA_OBJ//传感器触发运动参数结构
{
	int         iSpd;               //速度
	int         iStp;               //位移
	int         iMacc;              //加速度
	int         iMdec;              //减速度
	int         iMmss;              //最大启动速度
	int         iMmds;              //最大瞬停速度
}SENSOR_MOVE_PARA_OBJ, *P_SENSOR_MOVE_PARA_OBJ;

//UID820/828 IOC 结构
typedef union _IOC_INFO_OBJ
{
	struct
	{
		unsigned uiP1IOC	:2;
		unsigned uiP2IOC	:2;
		unsigned uiP3IOC	:2;
		unsigned uiP4IOC	:2;
		unsigned uiP5IOC	:2;
		unsigned uiP6IOC	:2;
		unsigned uiP7IOC	:2;
		unsigned uiP8IOC	:2;
	};
	unsigned int  uiIOCVal;
}IOC_INFO_OBJ, *P_IOC_INFO_OBJ;

//UID820/828 DVA结构
typedef union _DVA_INFO_OBJ
{
	struct
	{	
		unsigned bP1DVA	    :1;
		unsigned bP2DVA	    :1;
		unsigned bP3DVA	    :1;
		unsigned bP4DVA	    :1;
		unsigned bP5DVA	    :1;
		unsigned bP6DVA	    :1;
		unsigned bP7DVA	    :1;
		unsigned bP8DVA	    :1;
	};
	unsigned int  uiDVAVal;
}DVA_INFO_OBJ, *P_DVA_INFO_OBJ;


typedef union _DVA0808_INFO_OBJ
{
	struct
	{	
		unsigned bP1DVA	    :1;
		unsigned bP2DVA	    :1;
		unsigned bP3DVA	    :1;
		unsigned bP4DVA	    :1;
		unsigned bP5DVA	    :1;
		unsigned bP6DVA	    :1;
		unsigned bP7DVA	    :1;
		unsigned bP8DVA	    :1;
		unsigned bP01MSK    :1;
		unsigned bP02MSK    :1;
		unsigned bP03MSK    :1;
		unsigned bP04MSK    :1;
		unsigned bP05MSK    :1;
		unsigned bP06MSK    :1;
		unsigned bP07MSK    :1;
		unsigned bP08MSK    :1;
	};
	struct
	{	
		unsigned int outPort :8;
		unsigned int outMask :8;
	};
	unsigned int  uiDVAVal;
}DVA_0808_INFO_OBJ, *P_DVA_0808_INFO_OBJ;


//UID828 AVA端口配置结构
typedef union _AVA_PORT_OBJ
{
	struct
	{	
		unsigned bP1AVA	    :1;
		unsigned bP2AVA	    :1;
		unsigned bP3AVA	    :1;
		unsigned bP4AVA	    :1;
		unsigned bP5AVA	    :1;
		unsigned bP6AVA	    :1;
		unsigned bP7AVA	    :1;
		unsigned bP8AVA	    :1;
	};
	unsigned char btAVAPort;
}AVA_PORT_OBJ, *P_AVA_PORT_OBJ;
//UID828 AVA结构
typedef struct _AVA_INFO_OBJ
{
	AVA_PORT_OBJ objAVAPort;
	int     nP1Analog;
	int     nP2Analog;
	int     nP3Analog;
	int     nP4Analog;
	int     nP5Analog;
	int     nP6Analog;
	int     nP7Analog;
	int     nP8Analog;
}AVA_INFO_OBJ, *P_AVA_INFO_OBJ;

//UID820/828 PMB结构
typedef union _PMB_INFO_OBJ
{
	struct
	{
		unsigned uiPwmBase1	:8;
		unsigned uiPwmBase2	:8;
	};
	unsigned int  uiPMBVal;
}PMB_INFO_OBJ, *P_PMB_INFO_OBJ;

//UID820/828 PMD结构
typedef union _PMD_INFO_OBJ
{
	struct
	{
		unsigned uiPwmDuty1	:8;
		unsigned uiPwmDuty2	:8;
	};
	unsigned int  uiPMDVal;
}PMD_INFO_OBJ, *P_PMD_INFO_OBJ;

//UID828 AVA结构，用来获取模拟量值
typedef struct tagAVALogInfo
{
	int nP8analog;
	int nP7analog;
	int nP6analog;
	int nP5analog;
	int nP4analog;
	int nP3analog;
	int nP2analog;
	int nP1analog;
}AVALogInfo, *P_AVALogInfo;



//DMA struct
typedef struct _DMA_OBJ
{
	unsigned int  uiAddr;           //DMA烧写地址
	unsigned char d0;               //data0
	unsigned char d1;
	unsigned char d2;
	unsigned char d3;
	unsigned char d4;
	unsigned char d5;			    //data5
	unsigned int  uiOprType;        //1表示写，0表示读。只在解析命令时有用
}DMA_OBJ, *P_DMA_OBJ;

//OPR struct
typedef struct _OPR_CMD_OBJ
{
	unsigned int  uiOprCode;        //DMA烧写地址
	unsigned char LL;            
	unsigned char HH;
}OPR_CMD_OBJ, *P_OPR_CMD_OBJ;

//OPR DATA struct
typedef struct _OPR_DATA
{
	unsigned int  uiDC;             //Data Count
	unsigned char d0;               //data0 for input or output
	unsigned char d1;
	unsigned char d2;
	unsigned char d3;
	unsigned char d4;
	unsigned char d5;
	unsigned char d6;
}OPR_DATA, *P_OPR_DATA;
//OPR DATA struct
typedef struct _OPR_DATA_OBJ
{
	unsigned char   catalog;        //instruct catalog
	unsigned char   code;           //instruct code
	unsigned int    uiDC;           //Data Count
	unsigned char   d0;             //data0 for input or output
	unsigned char   d1;
	unsigned char   d2;
	unsigned char   d3;
	unsigned char   d4;
}OPR_DATA_OBJ, *P_OPR_DATA_OBJ;

//NRD DATA struct
typedef struct _NRD_DATA
{
	unsigned int    uiDC;           //Data Count
	unsigned char   d[6];           //data for input
}NRD_DATA, *P_NRD_DATA;

//SValue传感器动作对应值S12CON的 S1RACT,S1FACT,S2RACT,S2FACT。S34CON的S3RACT，S3FACT对应的值，
//具体可参考241,242用户手册传感器动作绑定部分
#define  SValue_0000 0          //无动作，无状态通知
#define  SValue_0001 1	        //无动作,状态取决于(MCFG<S2IE>)
#define  SValue_0010 2          //反向连续运行
#define  SValue_1010 10         //正向连续运行
#define  SValue_0011 3          //减速直到停止
#define  SValue_1011 11         //绝对位置清零+减速直到停止
#define  SValue_0111 7          //绝对位置清零+位移控制
#define  SValue_0100 4          //紧急停止
#define  SValue_1100 12         //绝对位置清零+紧急停止
#define  SValue_0101 5          //反向相对位移控制
#define  SValue_1101 13         //正向相对位移控制
#define  SValue_0110 6          //绝对位置清零
#define  SValue_1001 9          //换向(DIR=~DIR)相对位移控制
#define  SValue_1110 14         //换向(DIR=~DIR)连续运行
#define  SValue_1111 15         //脱机

//P4输出端口事件对应值
#define  P4EVENT_000 0          //无，由用户指令控制。
#define  P4EVENT_001 1          //速度 > 0，则电平 = P4LVL。否则电平= P4LVL 的反值
#define  P4EVENT_010 2          //方向 = 1，则电平 = P4LVL。否则电平= P4LVL 的反值
#define  P4EVENT_011 3          //位置 = 0，则电平 = P4LVL。否则电平= P4LVL 的反值


//STL堵状状态事件对应值
#define STL_VALUE_0000  0       //无动作，无状态通知
#define STL_VALUE_0001  1       //无动作,状态取决于(MCFG<STLIE>)
#define STL_VALUE_1110	14      //换向持续转动
#define STL_VALUE_1001  9       //换向增量位移控制
#define STL_VALUE_0100  4       //急停
#define STL_VALUE_1100  12      //急停设置零位
#define STL_VALUE_0110  6       //设置零位
#define STL_VALUE_1111  15      //脱机
   
typedef int (*GETLASTERR)(char *ErrMsg, unsigned int dwLen);

//SDK替代函数，目地为了使用户调用方便
//打开和关闭网关替代函数
typedef int (*SEARCHGATEWAY)(unsigned int dwGatewayType, P_GW_SEARCH_PARA pGWSearchPara, P_DEV_INFO_OBJ pDevInfoObj, int iLen);
typedef int (*OPENGATEWAY)(unsigned int dwDevIndex, unsigned int * pSubNodeIdlist, int iLen, unsigned int * pdCanBtr);
typedef int (*CLOSEGATEWAY)(unsigned int dwDevIndex);
typedef void (*SETQUICKSCAN)(int nComPort, int nBandRate,int nGatewayID);
typedef void (*SET242QUICKSCAN)(int nComPort, int nBandRate,int nGatewayID);

//寄存器设置替代函数
typedef int (*SETCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_ICFG_INFO_OBJ pICFGInfoOut, P_UIM_MCFG_INFO_OBJ pMCFGInfo);
typedef int (*GETCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_ICFG_INFO_OBJ pICFGInfoOut, P_UIM_MCFG_INFO_OBJ pMCFGInfo);

//传感器设置替代函数
typedef int (*SETSCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_SCFG_INFO_OBJ pSCFGInfo);//设置传感器动作

//驱动器参数设置替代函数
typedef int (*SETDEVPARA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iMCS, int iACR, int iCurr);

//基本运动替代函数
typedef int (*SETBASICMOV)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_MOVE_PARA_OBJ pBasicMovObj, unsigned int bLoop);
typedef int (*GETBASICMOV)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_MOVE_PARA_OBJ pBasicMovObj, unsigned int bLoop);

//高级运动替代函数
typedef int (*SETADVMOV)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_ADV_MOVE_PARA_OBJ pAdvMovObj);
typedef int (*GETADVMOV)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_ADV_MOVE_PARA_OBJ pAdvMovObj);

//传感器触发运动设置函数
typedef int (*SETSENSORMOV)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iSensor, P_SENSOR_MOVE_PARA_OBJ pSensorMovObj);

/*=================================================================================================
    NAME:  void pCallBackFunc(P_RTCN_MSG_OBJ pRtcnMsgObj);
	------------------------------------------------------------------------------------------
	Function:  
	------------------------------------------------------------------------------------------
	pRtcnMsgObj[in]:    
	------------------------------------------------------------------------------------------
    Return Value:  No Return Value
===================================================================================================*/
typedef void (*PF_SENSOR_NOTIFY_CALLBACK)(unsigned int dwDevIndex, P_CAN_MSG_OBJ pRtcnMsgObj, unsigned int dwMsgLen);

/*=================================================================================================
    NAME:   unsigned int SEARCHDEVICE(unsigned int dwDevType);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
	dwDevType[in]:
    pDevIndexList[out, optional]: This parameter can be NULL. __cdecl
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is the number of devices.
===================================================================================================*/
typedef int ( *SEARCHDEVICE)(unsigned int dwDevType, P_GW_SEARCH_PARA pGWSearchPara);

/*=================================================================================================
    NAME:   unsigned int GetUimDevIdList(unsigned int dwDevType, unsigned int * pDevIndexList);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
	dwDevType[in]:
    pDevIndexList[out, optional]: This parameter can be NULL. 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is the number of devices.
===================================================================================================*/
typedef int ( *GETUIMDEVIDLIST)(unsigned int dwDevType, unsigned int * pDevIndexList);

/*=================================================================================================
    NAME:   GetUimDevInfo(unsigned int dwDevIndex, P_DEV_INFO_OBJ pDevInfoObj);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
	dwDevIndex[in]:
    pDevInfoObj[out]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETUIMDEVINFO)(unsigned int dwDevIndex, P_DEV_INFO_OBJ pDevInfoObj);

/*=================================================================================================
    NAME:   unsigned int OpenUimDev(unsigned int dwDevIndex);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
	dwDevIndex[in]: The index of the device, which needs to be open.
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *OPENUIMDEV)(unsigned int dwDevIndex);

/*=================================================================================================
    NAME:   unsigned int CloseUimDev(unsigned int dwDevIndex);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
	dwDevIndex[in]: The index of the device, which needs to be closed.
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *CLOSEUIMDEV)(unsigned int dwDevIndex);

/*=================================================================================================
    NAME:   unsigned int UimGrobReg(unsigned int dwDevIndex, unsigned int * pCanNodeIdList, int iLen);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
	dwDevIndex[in]: The index of the device 
    pCanNodeIdList[out, optional]: This parameter can be NULL. 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is the number of sub CAN nodes in whole network.  
===================================================================================================*/
typedef int ( *UIMGROBREG)(unsigned int dwDevIndex, unsigned int * pCanNodeIdList, int iLen);

/*=================================================================================================
    NAME:   unsigned int GetMDL(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_MDL_INFO_OBJ pMDLInfoObj);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pMDLInfoObj[out]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETMDL)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_MDL_INFO_OBJ pMDLInfoObj);

/*=================================================================================================
    NAME:   unsigned int UimENA(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_BASIC_ACK_OBJ pBasicAckobj)
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    bAckEna[in]:
    pBasicAckobj[out]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *UIMENA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_BASIC_ACK_OBJ pBasicAckobj);

/*=================================================================================================
    NAME:   unsigned int UimOFF(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_BASIC_ACK_OBJ pBasicAckobj)
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    bAckEna[in]:
    pBasicAckobj[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *UIMOFF)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_BASIC_ACK_OBJ pBasicAckobj);

/*=================================================================================================
    NAME:   unsigned int SetSPD(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETSPD)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int UimACK(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_ACK_OBJ pACKInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pBasicAckobj[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *UIMACK)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_ACK_OBJ pACKInfo);

/*=================================================================================================
    NAME:   unsigned int UimFBK(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_FBK_OBJ pFBKInfo); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pFBKInfo[out]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *UIMFBK)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_FBK_OBJ pFBKInfo);

/*=================================================================================================
    NAME:   unsigned int UimSFBK(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_SFBK_INFO_OBJ pSFBKInfo); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pSFBKInfo[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *UIMSFBK)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_SFBK_INFO_OBJ pSFBKInfo);

/*=================================================================================================
    NAME:   unsigned int SetPOS(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETPOS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetDOUT(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETDOUT)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetSTP(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETSTP)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetgOFF(unsigned int dwDevIndex);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGOFF)(unsigned int dwDevIndex);

/*=================================================================================================
    NAME:   unsigned int SetgCUR(unsigned int dwDevIndex, float fGrobCur)
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    fGrobCur[in]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGCUR)(unsigned int dwDevIndex, float fGrobCur);

/*=================================================================================================
    NAME:   unsigned int SetgORG(unsigned int dwDevIndex, int iGrobORG); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobORG[in]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGORG)(unsigned int dwDevIndex, int iGrobORG);

/*=================================================================================================
    NAME:   unsigned int SetgDIR(unsigned int dwDevIndex, unsigned int bDir); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    bDir[in]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGDIR)(unsigned int dwDevIndex, unsigned int bDir);

/*=================================================================================================
    NAME:   unsigned int SetgSPD(unsigned int dwDevIndex, int iGrobSPD); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobSPD[in]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGSPD)(unsigned int dwDevIndex, int iGrobSPD);

/*=================================================================================================
    NAME:   unsigned int SetgSTP(unsigned int dwDevIndex, int iGrobSTP) 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobSTP[in]:     
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGSTP)(unsigned int dwDevIndex, int iGrobSTP);

/*=================================================================================================
    NAME:   unsigned int SetgPOS(unsigned int dwDevIndex, int iGrobPOS);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobPOS[in]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGPOS)(unsigned int dwDevIndex, int iGrobPOS);

/*=================================================================================================
    NAME:   unsigned int SetgQEC(unsigned int dwDevIndex, int iGrobQEC); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobQEC[in]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGQEC)(unsigned int dwDevIndex, int iGrobQEC);

/*=================================================================================================
    NAME:   unsigned int GetUimMCFG(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_MCFG_INFO_OBJ pMCFGInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobQEC[in]:   
    pMCFGInfo[out]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETUIMMCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_MCFG_INFO_OBJ pMCFGInfo);

/*=================================================================================================
    NAME:   unsigned int SetUimMCFG(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_MCFG_INFO_OBJ pMCFGInfoIn, unsigned int bAckEna, P_UIM_MCFG_INFO_OBJ pMCFGInfoOut);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pMCFGInfoIn[in]:
    bAckEna[in]:
    pMCFGInfoOut[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETUIMMCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_MCFG_INFO_OBJ pMCFGInfoIn, unsigned int bAckEna, P_UIM_MCFG_INFO_OBJ pMCFGInfoOut);


/*=================================================================================================
    NAME:   unsigned int SetmACC(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETMACC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetmACC(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETMACC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetmDEC(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETMDEC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetmDEC(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue) 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETMDEC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetmMDS(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETMMDS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetmMDS(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETMMDS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetmMSS(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETMMSS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetmMSS(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETMMSS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetSTG(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_STG_INFO_OBJ pStgInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pStgInfo[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETSTG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_STG_INFO_OBJ pStgInfo);

/*=================================================================================================
    NAME:   unsigned int SetSTG(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_STG_INFO_OBJ pStgInfoIn, unsigned int bAckEna, P_STG_INFO_OBJ pStgInfoOut); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pStgInfoIn[in]:
    bAckEna[in]:
    pStgInfoOut[out]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETSTG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_STG_INFO_OBJ pStgInfoIn, unsigned int bAckEna, P_STG_INFO_OBJ pStgInfoOut);

/*=================================================================================================
    NAME:   unsigned int SetQEC(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETQEC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetQER(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETQER)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetORG(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue)
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETORG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetSQT(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    iValue[in]:
    bAckEna[in]:
    pRtnValue[out]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETSQT)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
/*=================================================================================================
    NAME:   unsigned int GetSQT(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    pRtnValue[out]:     
	------------------------------------------------------------------------------------------
	Output:  
===================================================================================================*/

typedef int ( *GETSQT)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
/*=================================================================================================
    NAME:   unsigned int SetBDR(unsigned int dwDevIndex, int iValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    iValue[in]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETBDR)(unsigned int dwDevIndex, int iValue);

/*=================================================================================================
    NAME:   unsigned int SetADR(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:  
    dwCanNodeId[in]:  
    iValue[in]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETADR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue);

/*=================================================================================================
    NAME:   unsigned int SetgMCS(unsigned int dwDevIndex, int iGrobMCS); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobMCS[in]:      
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGMCS)(unsigned int dwDevIndex, int iGrobMCS);

/*=================================================================================================
    NAME:   unsigned int SetgDOUT(unsigned int dwDevIndex, int iGrobDOUT);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobDOUT[in]:      
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGDOUT)(unsigned int dwDevIndex, int iGrobDOUT);

/*=================================================================================================
    NAME:   unsigned int SetgACR(unsigned int dwDevIndex, int iGrobACR);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]: 
    iGrobACR[in]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETGACR)(unsigned int dwDevIndex, int iGrobACR);

/*=================================================================================================
    NAME:   unsigned int UimSTORE(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:
    bAckEna[in]:
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *UIMSTORE)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetACR(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iACR, unsigned int bAckEna, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    iACR[in]:
    bAckEna[in]:
    pRtnValue[out]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETACR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iACR, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetACR(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETACR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetMCS(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iMCS, unsigned int bAckEna, P_BASIC_ACK_OBJ pACKInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    iMCS[in]:  
    bAckEna[in]:  
    pACKInfo[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETMCS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iMCS, unsigned int bAckEna, P_BASIC_ACK_OBJ pACKInfo);

/*=================================================================================================
    NAME:   unsigned int GetMCS(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_ACK_OBJ pACKInfo); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:    
    pACKInfo[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETMCS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_ACK_OBJ pACKInfo);

/*=================================================================================================
    NAME:   unsigned int SetCUR(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iCUR, unsigned int bAckEna, P_BASIC_ACK_OBJ pACKInfo); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    iCUR[in]:  
    bAckEna[in]:   
    pACKInfo[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETCUR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iCUR, unsigned int bAckEna, P_BASIC_ACK_OBJ pACKInfo);

/*=================================================================================================
    NAME:   unsigned int GetCUR(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_ACK_OBJ pACKInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pACKInfo[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETCUR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_BASIC_ACK_OBJ pACKInfo);

/*=================================================================================================
    NAME:   unsigned int GetSPD(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETSPD)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);


/*=================================================================================================
    NAME:   unsigned int GetDOUT(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETDOUT)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetSTP(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETSTP)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetQEC(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETQEC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetPOS(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETPOS)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetATCONH(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iAtconH, unsigned int bAckEna, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    iAtconH[in]:   
    bAckEna[in]:   
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETATCONH)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iAtconH, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetATCONH(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:    
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETATCONH)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetATCONL(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iAtconL, unsigned int bAckEna, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    iAtconH[in]:   
    bAckEna[in]:   
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETATCONL)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iAtconL, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetATCONL(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETATCONL)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SetBTR(unsigned int dwDevIndex, int iBTR, unsigned int bAckEna, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    iBTR[in]:   
    bAckEna[in]:   
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETBTR)(unsigned int dwDevIndex, int iBTR, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetBTR(unsigned int dwDevIndex, int *  pRtnValue); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETBTR)(unsigned int dwDevIndex, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetSCFG(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_SCFG_INFO_OBJ pSCFGInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pSCFGInfo[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETSCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_SCFG_INFO_OBJ pSCFGInfo);

/*=================================================================================================
    NAME:   unsigned int SetS12CON(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S12CON pS12ConIn, unsigned int bAckEna, P_S12CON pS12ConOut);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    iAtconH[in]:   
    bAckEna[in]:   
    pRtnValue[out]:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETS12CON)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S12CON pS12ConIn, unsigned int bAckEna, P_S12CON pS12ConOut);

/*=================================================================================================
    NAME:   unsigned int GetS12CON(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S12CON pS12Con);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pRtnValue[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETS12CON)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S12CON pS12Con);

/*=================================================================================================
    NAME:   unsigned int SetS34CON(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S34CON pS34ConIn, unsigned int bAckEna, P_S34CON pS34ConOut);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    iAtconH[in]:   
    bAckEna[in]:   
    pRtnValue[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETS34CON)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S34CON pS34ConIn, unsigned int bAckEna, P_S34CON pS34ConOut);

/*=================================================================================================
    NAME:   unsigned int GetS34CON(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S34CON pS34Con); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
	Input:    
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETS34CON)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_S34CON pS34Con);


/*=================================================================================================
    NAME:   unsigned int SetUIDMCFG(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UID_MCFG_INFO_OBJ pUIDMCFGIn, unsigned int bAckEna, P_UID_MCFG_INFO_OBJ pUIDMCFGOut);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pUIDMCFGIn[in]:   
    bAckEna[in]:   
    pUIDMCFGOut[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/


typedef int ( *SETRPT)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

typedef int ( *SETRPC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

typedef int ( *GETRPT)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

typedef int ( *GETRPC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);


typedef int ( *SETUIDMCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UID_MCFG_INFO_OBJ pUIDMCFGIn, unsigned int bAckEna, P_UID_MCFG_INFO_OBJ pUIDMCFGOut);

/*=================================================================================================
    NAME:   unsigned int GetUIDMCFG(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UID_MCFG_INFO_OBJ pUIDMCFG);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pUIDMCFG[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETUIDMCFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UID_MCFG_INFO_OBJ pUIDMCFG);

/*=================================================================================================
    NAME:   unsigned int SetIOconfig(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_IOC_INFO_OBJ pIOCInfoIn, unsigned int bAckEna, P_IOC_INFO_OBJ pIOCInfoOut);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pIOCInfoIn[in]:   
    bAckEna[in]:   
    pIOCInfoOut[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETIOCONFIG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_IOC_INFO_OBJ pIOCInfoIn, unsigned int bAckEna, P_IOC_INFO_OBJ pIOCInfoOut);

/*=================================================================================================
    NAME:   unsigned int GetIOconfig(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_IOC_INFO_OBJ pIOCInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pIOCInfo[out]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETIOCONFIG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_IOC_INFO_OBJ pIOCInfo);

/*=================================================================================================
    NAME:   unsigned int SetDVAInfo(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_DVA_INFO_OBJ pDvaInfoIn, unsigned int bAckEna, P_DVA_INFO_OBJ pDvaInfoOut); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pDvaInfoIn[in]:   
    bAckEna[in]:   
    pDvaInfoOut[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETDVAINFO)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_DVA_INFO_OBJ pDvaInfoIn, unsigned int bAckEna, P_DVA_INFO_OBJ pDvaInfoOut);
typedef int ( *SET0808DVAINFO)( unsigned int dwDevIndex,  unsigned int dwCanNodeId, P_DVA_0808_INFO_OBJ pDvaInfoIn, unsigned int bAckEna, P_DVA_0808_INFO_OBJ pDvaInfoOut);

/*=================================================================================================
    NAME:   unsigned int GetAVAInfo(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_AVA_INFO_OBJ pAvaInfoIn, unsigned int bAckEna, P_AVA_INFO_OBJ pAvaInfoOut); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pAvaInfoIn[in]:   
    bAckEna[in]:   
    pAvaInfoOut[out]: 
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETAVAINFO)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_AVA_INFO_OBJ pAvaInfoIn, unsigned int bAckEna, P_AVA_INFO_OBJ pAvaInfoOut);

/*=================================================================================================
    NAME:   unsigned int GetAVAInfo(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_DVA_INFO_OBJ pDvaInfo); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pDvaInfo[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETDVAINFO)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_DVA_INFO_OBJ pDvaInfo);
typedef int  ( *GET0808DVAINFO)(unsigned int  dwDevIndex, unsigned int  dwCanNodeId, P_DVA_0808_INFO_OBJ pDvaInfo);
/*=================================================================================================
    NAME:   unsigned int SetPMB(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMB_INFO_OBJ pPMBInfoIn, unsigned int bAckEna, P_PMB_INFO_OBJ pPMBInfoOut);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pPMBInfoIn[in]:   
    bAckEna[in]:   
    pPMBInfoOut[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETPMB)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMB_INFO_OBJ pPMBInfoIn, unsigned int bAckEna, P_PMB_INFO_OBJ pPMBInfoOut);

/*=================================================================================================
    NAME:   unsigned int GetPMB(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMB_INFO_OBJ pPMBInfo); 
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pPMBInfo[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETPMB)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMB_INFO_OBJ pPMBInfo);

/*=================================================================================================
    NAME:   SetPMD(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMD_INFO_OBJ pPMDInfoIn, unsigned int bAckEna, P_PMD_INFO_OBJ pPMDInfoOut);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pPMDInfoIn[in]:   
    bAckEna[in]:   
    pPMDInfoOut[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETPMD)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMD_INFO_OBJ pPMDInfoIn, unsigned int bAckEna, P_PMD_INFO_OBJ pPMDInfoOut);

/*=================================================================================================
    NAME:   unsigned int GetPMD(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMD_INFO_OBJ pPMDInfo);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    pPMDInfo[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETPMD)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_PMD_INFO_OBJ pPMDInfo);

/*=================================================================================================
    NAME:   unsigned int SetPBR(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:   
    iValue[in]: 
    bAckEna[in]: 
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETPBR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int GetPBR(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETPBR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

/*=================================================================================================
    NAME:   unsigned int SETDMA(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_DMA_OBJ pDMAin, unsigned int bAckEna, P_DMA_OBJ pDMAout);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETDMA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_DMA_OBJ pDMAin, unsigned int bAckEna, P_DMA_OBJ pDMAout);

/*=================================================================================================
    NAME:   unsigned int GETDMA(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iAddr, P_DMA_OBJ pDMAout);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *GETDMA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iAddr, P_DMA_OBJ pDMAout);

/*=================================================================================================
    NAME:   unsigned int SETOPR(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_OPR_CMD_OBJ pOPRcmdobj, unsigned int bAckEna);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETOPR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_OPR_CMD_OBJ pOPRcmdobj, unsigned int bAckEna);

/*=================================================================================================
    NAME:   unsigned int OPRREAD(unsigned int dwDevIndex, unsigned int dwCanNodeId, const P_OPR_CMD_OBJ pOPRcmdobj, P_DMA_OBJ pDMAout);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *OPRREAD)(unsigned int dwDevIndex, unsigned int dwCanNodeId, const P_OPR_CMD_OBJ pOPRcmdobj, P_DMA_OBJ pDMAout);

/*=================================================================================================
    NAME:   unsigned int OPRREADPTR(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnLine);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:  
    pRtnValue[out]:  
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *OPRREADPTR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnLine);

/*=================================================================================================
    NAME:   unsigned int SetDevIndex(unsigned int dwPreDevIndex, unsigned int dwNewDevIndex);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwPreDevIndex[in]:    
    dwNewDevIndex[in]:   
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int ( *SETDEVINDEX)(unsigned int dwPreDevIndex, unsigned int dwNewDevIndex);

typedef int ( *GETUIMICFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_ICFG_INFO_OBJ pICFGInfoOut);
typedef int ( *SETUIMICFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_ICFG_INFO_OBJ pICFGInfoIn, unsigned int bAckEna, P_UIM_ICFG_INFO_OBJ pICFGInfoOut);
typedef int ( *UIMADVENA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
typedef int ( *UIMGETADVENA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
typedef int ( *UIMADVSTORE)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  iValue, unsigned int bAckEna, int *  pRtnValue);
typedef int ( *SETBLC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
typedef int ( *GETBLC)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);
typedef int ( *GETQER)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int *  pRtnValue);

//UIM900 NRD 
typedef int ( *SETNRD)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_NRD_DATA pNRDDataIn, unsigned int bAckEna, P_NRD_DATA pNRDDataOut);
typedef int ( *UIM900SETBTR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iValue, unsigned int bAckEna, int *  pRtnValue);
typedef int ( *UIM900SEND)(unsigned int dwDevIndex, unsigned int dwCanNodeId, char *pSendDate, int len, unsigned int bAckEna, char *pAckDate);
typedef int ( *UIM900RECV)(unsigned int dwDevIndex, unsigned int dwCanNodeId, char *pRcvDate, int len);

//================================OPRx RELATED COMMAND====================================//
typedef int ( *GETUIMICFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_ICFG_INFO_OBJ pICFGInfoOut);
typedef int ( *SETUIMICFG)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_UIM_ICFG_INFO_OBJ pICFGInfoIn, unsigned int bAckEna, P_UIM_ICFG_INFO_OBJ pICFGInfoOut);

typedef int ( *OPRATE)(unsigned int dwDevIndex, unsigned int dwCanNodeId, P_OPR_DATA_OBJ pOPRDataObjIn, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataObjOut);

typedef int ( *OPR_FILLDMA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, char btFillByte, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_CLEARFLASH)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_BURNFLASH)(unsigned int dwDevIndex, unsigned int dwCanNodeId, int iAddress, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);
//typedef int (__cdecl *OPR_READLINE)(unsigned int dwDevIndex, unsigned int dwCanNodeId,int iAddress, unsigned int bAckEna, P_OPR_DATA pOPRDataOut);
typedef int ( *OPR_READCURRPTR)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);

//Function For RFID operation
typedef int ( *OPR_OPENANTENNA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_CLOSEANTENNA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_FINDRFID)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_CLOSERFID)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_RFIDREAD)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, unsigned int bKeyA, int nBLKNum, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_RFIDWRITE)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, unsigned int bKeyA, int nBLKNum, P_OPR_DATA_OBJ pOPRDataOut);
typedef int ( *OPR_SETRFIDKEY)(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, unsigned int bKeyA, char *pKey);
typedef int ( *OPR_GETRFIDBLKDATA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, char *pData);
typedef int ( *OPR_SETRFIDBLKDATA)(unsigned int dwDevIndex, unsigned int dwCanNodeId, char *pData);
typedef int ( *OPR_GETRFIDCARDNUM)(unsigned int dwDevIndex, unsigned int dwCanNodeId, char *pCardNum);

// UISIMCANFUNC_API unsigned int OPR_OpenAntenna(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataObjOut);
// UISIMCANFUNC_API unsigned int OPR_CloseAntenna(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataObjOut);
// UISIMCANFUNC_API unsigned int OPR_CloseRFID(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataObjOut);
// UISIMCANFUNC_API unsigned int OPR_FindRFID(unsigned int dwDevIndex, unsigned int dwCanNodeId, unsigned int bAckEna, P_OPR_DATA_OBJ pOPRDataObjOut);
// 


/*=================================================================================================
    NAME:   unsigned int UIMRegRtcnCallBack(unsigned int dwDevType, unsigned int dwDevIndex, PF_SENSOR_NOTIFY_CALLBACK pCallBackFunc);
	------------------------------------------------------------------------------------------
	Function:   
	------------------------------------------------------------------------------------------
    dwDevIndex[in]:    
    dwCanNodeId[in]:     
    pCallBackFunc[in]:
	------------------------------------------------------------------------------------------
	Return Value:  If the function fails, the return value is -1. If the function succeeds, the return value is 1.  
===================================================================================================*/
typedef int(*UIMREGRTCNCALLBACK)(unsigned int dwDevType, unsigned int dwDevIndex, PF_SENSOR_NOTIFY_CALLBACK pCallBackFunc);

typedef int(*UIMREGNOTICE)(P_CANIDNotice pCanIDNoticeUser);
typedef int(*FORCESTOPPROGRAM)(unsigned int dwDevType, P_GW_SEARCH_PARA pGWSearchPara, unsigned int dwCANID);

#endif //__UISIMCANFUNC_RT_H__
